import os


"""
一个问题：
就是文件名可能存在问题，报错.

即使是没有文件再创建也会报错：
with open(file_name, "w", encoding='utf8') as sub_f:
    也会报错....


with open(file_name, "w", encoding='utf8') as sub_f:
FileNotFoundError: [Errno 2]
所以修改一下，当文件名足够长的时候，默认为文件，而不是文件夹，自动创建.

len(name) < 70


"""

"""
适用环境 windows.
将所有的文件，及其对应的子目录便利获取文件名.
将文件名称构建一个对应名称，但是扩展名为txt的文件占位置.
txt文件不写入任何信息.
"""

# 获取python文件位置绝对路径,建议位置为桌面，实际无位置限定.
TargetPath = os.getcwd() + '\TargetName'

# 构建处理路径
if not os.path.exists(TargetPath):
    os.makedirs(TargetPath)
    print("创建新的目标文件夹成功！")


# 待读取文件的文件夹绝对路径
# path = 'F:\Ad Files'
VideoPath = 'M:'

def GetVideoName(ValueVideoPath,TargetPath):
    print(TargetPath)
    # 获得文件夹中所有文件的名称列表
    ListVideoPath = os.listdir(ValueVideoPath)
    print(ListVideoPath)

    # 遍历列表.
    for file in ListVideoPath:
        if (file.startswith('$')) or (file.startswith('System')) or (file.endswith('bin')):
            pass

       
        else:
            # 限定数据访问的范围.文件名过长，报错，需要裁剪 问题.
            if (len(file) > 80):
                list_file = file.split(' ')
                file = ''
                boundIndex = len(list_file) - 1
                for i in range(boundIndex):
                    file = file + list_file[i] + ' '
                    if (len(file) > 80):
                    	break
                file = file + list_file[-1]


            CreateFullName = ValueVideoPath + '\\' + file
            if not (os.path.isdir(CreateFullName)):
                print("*"*30)
                print(os.path.isdir(CreateFullName))


                # 为文件.
                file = file.strip().replace('.mp4', '.txt')
                file_name = TargetPath + '\\'+file
                print('-'*50)
                print(file_name)


                with open(file_name, "w", encoding='utf-8') as sub_f:
                    # 保证结构完整性
                    pass

            # 为目录.
            else:
                # 若是文件夹，则先构建文件夹目录.
                SubTargetPath = TargetPath + '\\' + file.strip()

                # 不存在目标就创建.
                print(SubTargetPath)
                if not os.path.exists(SubTargetPath):
                    os.makedirs(SubTargetPath)
                    print(SubTargetPath)

                # 递归主函数,子目录.
                SubVideoPath = ValueVideoPath + '\\{}'.format(file)

                # 递归主体函数.
                GetVideoName(SubVideoPath,SubTargetPath)


GetVideoName(VideoPath,TargetPath)
print("Finished!")
